//go:build windows
// +build windows

package main

import (
	"fmt"
	托盘类 "gitee.com/go_888/tray"
	"gitee.com/go_888/tray/example/icon"
	"io/ioutil"
	"os"
	"path/filepath"
	"runtime"
	"time"
)

func main() {
	退出事件 := func() {
		fmt.Println("已退出")
	}

	//会阻塞运行, 如果用了其他的ui框架，请使用 X异步运行
	托盘类.X阻塞运行(就绪事件, 退出事件)
}

func 添加退出项() {
	退出 := 托盘类.X加入菜单项("退出")
	退出.X启用菜单项()
	退出.X鼠标单击(func() {
		托盘类.X退出()
		fmt.Println("已完成退出")
	})
}

func 就绪事件() {
	托盘类.X设置托盘图标(icon.Data)
	托盘类.X设置图标提示("工具提示")
	托盘类.X事件_左键点击(func(menu 托盘类.X接口_菜单项) {
		menu.X显示菜单()
		fmt.Println("托盘被左键单击")
	})
	托盘类.X事件_左键双击(func(menu 托盘类.X接口_菜单项) {
		menu.X显示菜单()
		fmt.Println("托盘被左键双击")
	})

	托盘类.X事件_右键单击(func(menu 托盘类.X接口_菜单项) {
		menu.X显示菜单()
		fmt.Println("托盘被右键单击")
	})

	添加退出项()
	托盘类.X设置托盘图标(icon.Data)
	mChange := 托盘类.X加入菜单项("改变我")
	mChecked := 托盘类.X加入菜单项("选中的")
	mEnabled := 托盘类.X加入菜单项("启用")
	mEnabled.X设置图标(icon.Data)

	托盘类.X加入菜单项("Ignored")

	subMenuTop := 托盘类.X加入菜单项("子菜单顶部")
	subMenuMiddle := subMenuTop.X加入子菜单项("中间子菜单")
	subMenuBottom := subMenuMiddle.X加入子菜单项("子菜单底部-切换 Panic!")
	subMenuBottom2 := subMenuMiddle.X加入子菜单项("子菜单底部- Panic!")
	subMenuBottom2.X设置图标(icon.Data)
	托盘类.X加入分隔栏()
	mToggle := 托盘类.X加入菜单项("切换")
	shown := true
	toggle := func() {
		if shown {
			subMenuBottom.X选中菜单项()
			subMenuBottom2.X隐藏菜单项()
			mEnabled.X隐藏菜单项()
			shown = false
			mEnabled.X禁用菜单项()
		} else {
			subMenuBottom.X取消选中()
			subMenuBottom2.X显示菜单项()
			mEnabled.X显示菜单项()
			mEnabled.X启用菜单项()
			shown = true
		}
	}
	mReset := 托盘类.X加入菜单项("重置")

	mChange.X鼠标单击(func() {
		mChange.X设置名称("我改变了")
	})
	mChecked.X鼠标单击(func() {
		if mChecked.X是否选中() {
			mChecked.X取消选中()
			mChecked.X设置名称("未选中")
		} else {
			mChecked.X选中菜单项()
			mChecked.X设置名称("选中的")
		}
	})
	mEnabled.X鼠标单击(func() {
		mEnabled.X设置名称("Disabled")
		fmt.Println("mEnabled.Disabled()", mEnabled.X是否禁用())
		mEnabled.X禁用菜单项()
	})
	subMenuBottom2.X鼠标单击(func() {
		panic("紧急按钮按下")
	})
	subMenuBottom.X鼠标单击(func() {
		toggle()
	})
	mReset.X鼠标单击(func() {
		托盘类.X删除所有菜单项()
		添加退出项()
	})
	mToggle.X鼠标单击(func() {
		toggle()
	})
	// 托盘图标开关
	go func() {
		var b bool
		// 演示：转png完整路径
		wd, _ := os.Getwd()
		wd = filepath.Join(wd, "example\\icon")

		// 图标路径:/to/icon/path/icon.png, logo.png
		var ext = ".png"
		if runtime.GOOS == "windows" {
			ext = ".ico" // windows .ico
		}
		icoData, _ := ioutil.ReadFile(filepath.Join(wd, "icon"+ext))
		logoData, _ := ioutil.ReadFile(filepath.Join(wd, "logo"+ext))
		for true {
			time.Sleep(time.Second * 1)
			b = !b
			if b {
				托盘类.X设置托盘图标(logoData)
			} else {
				托盘类.X设置托盘图标(icoData)
			}
		}
	}()
}
